package fanxing20230413;

import java.sql.SQLOutput;
//通配符解决问题    通配符的上下界
class Message<T> {
    private T message;

    public T getMessage() {
        return message;
    }

    public void setMessage(T message) {
        this.message = message;
    }
}

class Demo<T> {//擦除机制 ：T类型在编译的过程中都被擦除成object类

}
public class Text2 {
    //此时我指定的类型是String类型的 只能传过来一个String类型的参数
    //但是如果传过来一个Integer类型就无法完成，此时可以用通配符
    public static void fun(Message<?> temp) {
        //temp.setMessage(132);//但是不能在这里设置temp的类型，
        //此时类型是不确定的，无法修改
        System.out.println(temp.getMessage());
    }
    public static void main(String[] args) {
        Message<String> message1 = new Message<>();
        message1.setMessage("比特就业课欢迎您！");
        fun(message1);

        Message<Integer> message2 = new Message<>();
        message2.setMessage(1212);
        fun(message2);
    }
    public static void main1(String[] args) {
        //<>当中的数据类型 不参与类型的组成，
        // JVM当中在运行时没有泛型这个概念 泛型只存在于编译时期的一种机制
        //这种机制就是根据你给的类型来检查你插入的数据是否对
        Demo<String> demo = new Demo<>();
        System.out.println(demo);
        Demo<Integer> demo1 = new Demo<>();
        System.out.println(demo1);
    }
}
